#include "bits/stdc++.h"
using namespace std;
// 求解a^x≡b (mod p)
// 分块求解，指定B = sqrt(p)
// 原始分解成a^(mB - n) ≡ b (mod p)
// 移项变成a^(mB) ≡ b * a^n (mod p)
// n[0, B - 1]
// 只适合a和p互质
// -1表示无解
namespace BSGS {
	int power(int a, int b, int p) {
		int ret = 1;
		while (b > 0) {
			if (b & 1) {
				ret = 1ll * ret * a % p;
			}
			a = 1ll * a * a % p;
			b >>= 1;
		}
		return ret;
	}

	int work(int a, int b, int p) {
		if (a % p == b % p) {
			return 1;
		}
		if (1 % p == b % p) {
      return 0;
		}
		if (a % p == 0 && b) {
			return -1;
		}
		a %= p, b %= p;
		unordered_map<int, int> mp;
		int B = sqrt(p) + 1;
		int t = power(a, B, p);

		for (int i = 0; i <= B; i++) {
			mp[b] = i;
			b = 1ll * b * a % p;
		}

		b = 1;
		for (int i = 1; i <= B; i++) {
			b = 1ll * b * t % p;
			if (mp.count(b)) {
				return i * B - mp[b];
			}
		}
		return -1;
	} 
}
int main() {
	int a, b, p;
	cin >> p >> a >> b;
	int ret = BSGS::work(a, b, p);
	if (ret == -1) {
		cout << "no solution";
	} else {
		cout << ret;
	}
	return 0;
}